Computer program development often involves providing a model of the program tasks, especially a user interface model. Simplified, a first person—the designer (or “developer”)—uses the model to design the program at design time. A second person—the user—later uses the program at use time. The program interacts with the user through presentations on an output device. Taking a computer screen as an example, the presentations may have windows, icons, menus, buttons, tool bars or the like. The presentations serve to convey information to the user (e.g., by icons) and receive control commands from the user (e.g., from buttons).
The user's requirements may for example relate to:                the layout structure of the presentations,        the navigation between presentations according to predefined sequences, and        the availability of program functions.        
The designer should take user-requirements into account. It may therefore be desirable to simulate the program by prototypes at design time. A third person—the tester—may then use a prototype that corresponds to the above requirements. The prototype may have reduced functionality compared with the program.
However, providing a fully functional prototype may have disadvantages. The designer needs to have programming skills in order to provide such a prototype. If the testing reveals the need for changes, this may cause rewriting of the computer program. Accordingly, it may be desirable to automate prototype and program providing.